#!/bin/bash
# 功能: 停止零代码服务的脚本，使用时需注意，请结合自身的实际调整 BASE_DIR 变量
# 名称: stop_thingx_singlehost.sh
# 作者: zxm
# 创建日期: 2024-11-25
# 版本: v1.0

echo -e "\e[1;33m请在执行脚本前根据实际情况调整临时环境变量设置!\e[0m\n"

# 基础目录
BASE_DIR=/uino

# 服务路径
THINGX_HOME="$BASE_DIR/thingx/thingjsx-server"
ES_HOME="$BASE_DIR/elasticsearch-6.6.2"

# 设置临时环境变量
export JAVA_HOME="$BASE_DIR/jdk_linux"
export JRE_HOME="$JAVA_HOME/jre"
export PATH="$JAVA_HOME/bin:$PATH"
export CLASSPATH=".:$JAVA_HOME/lib:$JRE_HOME/lib"

# 非root执行的检测逻辑
if [ "$(id -u)" -eq 0 ]; then
    echo -e "\e[1;31m此脚本必须以非root用户身份运行!\e[0m" 1>&2
    exit 1
fi

# 获取服务PID的函数
get_pid() {
    local pid
    pid=$(pgrep -f "$1")
    echo "$pid"
}

# 停止服务的函数
stop_service() {
    local service_name="$1"
    local pid="$2"

    if [ -n "$pid" ]; then
        echo "服务 $service_name 存在，它的PID是 $pid"
        kill -15 "$pid"
        if [ $? -eq 0 ]; then
            echo -e "\e[1;32m停止 $service_name 成功\e[0m"
        else
            echo -e "\e[1;31m停止 $service_name 失败\e[0m"
        fi
    else
        echo -e "\e[1;33m服务 $service_name 并不存在，不需要停止\e[0m"
    fi
}

# 停止 thingx
thingx_pid=$(get_pid "${THINGX_HOME}")
stop_service "thingx" "$thingx_pid"

# 停止 elasticsearch
es_pid=$(get_pid "${ES_HOME}/lib")
stop_service "elasticsearch" "$es_pid"

# 结束脚本
exit 0
